Update Entity using DBContext 您所在的位置:网站首页 entityframework update Update Entity using DBContext

Update Entity using DBContext

#Update Entity using DBContext| 来源: 网络整理| 查看: 265

Previous Next Update Existing Entity using DBContext in Disconnected Scenario

In this chapter, you will learn how to update a single entity in a disconnected scenario.

If you use Database-First approach, then create an Entity Data Model as shown in the previous chapter for SchoolDB sample database. Or, if you use Code-First or Model-First approach, then create entities and context classes. In any case, entities and context classes will look similar.

Here, we will see how to update a single Student entity (not entity graph). The following is a Student entity.

using System; using System.Collections.Generic; public partial class Student { public Student() { this.Courses = new HashSet(); } public int StudentID { get; set; } public string StudentName { get; set; } public Nullable StandardId { get; set; } public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual ICollection Courses { get; set; } }

The following is a context class.

using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.Core.Objects; using System.Linq; public partial class SchoolDBEntities : DbContext { public SchoolDBEntities() : base("name=SchoolDBEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { } public virtual DbSet Courses { get; set; } public virtual DbSet Standards { get; set; } public virtual DbSet Students { get; set; } public virtual DbSet StudentAddresses { get; set; } public virtual DbSet Teachers { get; set; } }

The following example shows how to update a Student entity in the disconnected scenario:

Student stud; //1. Get student from DB using (var ctx = new SchoolDBEntities()) { stud = ctx.Students.Where(s => s.StudentName == "New Student1").FirstOrDefault(); } //2. change student name in disconnected mode (out of ctx scope) if (stud != null) { stud.StudentName = "Updated Student1"; } //save modified entity using new Context using (var dbCtx = new SchoolDBEntities()) { //3. Mark entity as modified dbCtx.Entry(stud).State = System.Data.Entity.EntityState.Modified; //4. call SaveChanges dbCtx.SaveChanges(); }

As you see in the above code snippet, we are doing the following steps:

Get the existing student from DB. Change the student name out of Context scope (disconnected mode) Pass the modified entity into the Entry method to get its DBEntityEntry object and then mark its state as Modified Call SaveChanges() method to update student information into the database.

SaveChanges will send the following update query to the database:

exec sp_executesql N'update [dbo].[Student] set [StudentName] = @0, [StandardId] = @1 where ([StudentID] = @2)',N'@0 varchar(50), @1 int,@2 int',@0='Updated Student1',@1=299,@2=267

In this way, we can easily update a single entity using DBContext in the disconnected mode.

DbContext.Entry method returns an instance of DBEntityEntry for a specified Entity. An instance of DbEntityEntry class providea access to information about a given entity and its state. You can change the state of an entity to Added, Updated, or Deleted.

In the next chapter you will learn how to delete a single entity in the disconnected mode.

 Download EF 6 DB-First Demo Project from Github Previous Next


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有